package com.fuhe.chen.vendingmachine.service;

import com.fuhe.chen.vendingmachine.dto.ItemInMachine;
import com.fuhe.chen.vendingmachine.dto.cond.ItemCond;
import com.fuhe.chen.vendingmachine.pojo.Category;
import com.fuhe.chen.vendingmachine.pojo.Item;
import com.fuhe.chen.vendingmachine.pojo.RelationshipItemMachine;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface IItemService {


    /**
     * 根据在售商品主键查询商品
     * @return CommodityInMachine 在售商品信息
     */
    ItemInMachine queryItem(Integer Id);


    /**
     * 查询本机所有商品
     * @param machineID 机器主键
     * @return
     */
    List<ItemInMachine> queryItemGroupByCategoryId(Integer machineID);

    /**
     * 按条件查询商品信息
     * @param machineID 机器id
     * @param itemID 商品id
     * @return
     */
    List<ItemInMachine> queryItem(Integer machineID, Integer itemID);

    /**
     * 商品进货
     * 增加库存
     */
    String addStock(Integer itemId,Integer machineId,String containerNumber);

    /**
     * 查询所有已上架商品信息
     * @return
     */
    List<Item> queryAllOnSale();

    void addItem(Item item);

    void updateItem(Item item);

    void deleteItem(Integer item_id);

    PageInfo<Item> queryItemByCondition(ItemCond cond, Integer pageNum, Integer pageSize);

    Item queryOne(Integer id);

    /**
     * 查询机器中现有商品的分类信息
     * @return
     */
    List<Category> queryCategories(int machineId);

    /**
     * 根据机器id和商品分类查询在售商品
     * @param machineId
     * @param categoryId
     * @return
     */
    List<RelationshipItemMachine> queryItemByCategory(int machineId, int categoryId);

    /**
     * 根据机器id查询在售商品列表
     * @param machineId
     * @return
     */
    List<RelationshipItemMachine> queryItemListByMachineID(int machineId);
}
